import socket

# 第一步：创建WebServer类
class WebServer(object):
    # 第四步：定义魔术方法__init__()
    def __init__(self):
        # ① 创建服务器端套接字对象
        self.tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # ② 绑定IP和端口号
        self.tcp_server_socket.bind(('', 8000))
        # ③ 设置监听
        self.tcp_server_socket.listen(128)

    # 第五步：定义一个start()方法 => 接收客户端连接
    def start(self):
        # ④ 接收客户端连接（允许多个客户端同时连接）
        while True:
            new_socket, ip_port = self.tcp_server_socket.accept()
            # ⑤ 接收客户端发送过来的信息
            content = new_socket.recv(1024).decode('gbk')
            print(f'{ip_port}客户端发送过来的数据：{content}')
            # ⑥ 返回数据给客户端（响应数据）
            new_socket.send('信息已收到,over!'.encode('gbk'))
            new_socket.close()
            # 为什么没有关闭服务器端套接字？ 因为始终保持接收客户端连接

# 第二步：实例化对象，调用__init__()初始化方法
ws = WebServer()
# 第三步：启动服务，接收客户端连接
ws.start()


# 如何期望服务器端，可以同时处理多个客户端请求，怎么办呢？答：使用多任务编程